/**
 * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
 */
package com.jeesite.modules.st.entity;

import org.hibernate.validator.constraints.Length;
import java.util.Date;
import com.jeesite.common.mybatis.annotation.JoinTable;
import com.jeesite.common.mybatis.annotation.JoinTable.Type;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.List;
import com.jeesite.common.collect.ListUtils;

import com.jeesite.common.entity.DataEntity;
import com.jeesite.common.mybatis.annotation.Column;
import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.mapper.query.QueryType;

/**
 * 出库单Entity
 * @author HOHD
 * @version 2020-12-15
 */
@Table(name="st_stock_out_bill", alias="a", columns={
		@Column(name="id", attrName="id", label="id", isPK=true),
		@Column(name="bill_no", attrName="billNo", label="单据号"),
		@Column(name="bill_date", attrName="billDate", label="单据日期"),
		@Column(name="bill_type", attrName="billType", label="单据类别"),
		@Column(name="tally_date", attrName="tallyDate", label="入账日期"),
		@Column(name="bar_code", attrName="barCode", label="条码扫描"),
		@Column(name="primary_bill_no", attrName="primaryBillNo", label="源单"),
		@Column(name="dept_code", attrName="deptCode", label="部门编码"),
		@Column(name="dept_name", attrName="deptName", label="部门", queryType=QueryType.LIKE),
		@Column(name="approve_state", attrName="approveState", label="审批状态"),
		@Column(name="approve_man_code", attrName="approveManCode", label="审批人编码"),
		@Column(name="approve_man_name", attrName="approveManName", label="审批人", queryType=QueryType.LIKE),
		@Column(name="create_by", attrName="createBy", label="创建者", isUpdate=false, isQuery=false),
		@Column(name="create_date", attrName="createDate", label="创建时间", isUpdate=false, isQuery=false),
		@Column(name="update_by", attrName="updateBy", label="更新者", isQuery=false),
		@Column(name="update_date", attrName="updateDate", label="更新时间", isQuery=false),
		@Column(name="remarks", attrName="remarks", label="备注信息", queryType=QueryType.LIKE),
	}, orderBy="a.update_date DESC"
)
public class StStockOutBill extends DataEntity<StStockOutBill> {
	
	private static final long serialVersionUID = 1L;
	private String billNo;		// 单据号
	private Date billDate;		// 单据日期
	private Integer billType;		// 单据类别
	private Date tallyDate;		// 入账日期
	private String barCode;		// 条码扫描
	private String primaryBillNo;		// 源单
	private String deptCode;		// 部门编码
	private String deptName;		// 部门
	private Integer approveState;		// 审批状态
	private String approveManCode;		// 审批人编码
	private String approveManName;		// 审批人
	private List<StStockOutBillDetail> stStockOutBillDetailList = ListUtils.newArrayList();		// 子表列表
	
	public StStockOutBill() {
		this(null);
	}

	public StStockOutBill(String id){
		super(id);
	}
	
	@Length(min=0, max=20, message="单据号长度不能超过 20 个字符")
	public String getBillNo() {
		return billNo;
	}

	public void setBillNo(String billNo) {
		this.billNo = billNo;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getBillDate() {
		return billDate;
	}

	public void setBillDate(Date billDate) {
		this.billDate = billDate;
	}
	
	public Integer getBillType() {
		return billType;
	}

	public void setBillType(Integer billType) {
		this.billType = billType;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getTallyDate() {
		return tallyDate;
	}

	public void setTallyDate(Date tallyDate) {
		this.tallyDate = tallyDate;
	}
	
	@Length(min=0, max=20, message="条码扫描长度不能超过 20 个字符")
	public String getBarCode() {
		return barCode;
	}

	public void setBarCode(String barCode) {
		this.barCode = barCode;
	}
	
	@Length(min=0, max=20, message="源单长度不能超过 20 个字符")
	public String getPrimaryBillNo() {
		return primaryBillNo;
	}

	public void setPrimaryBillNo(String primaryBillNo) {
		this.primaryBillNo = primaryBillNo;
	}
	
	@Length(min=0, max=20, message="部门编码长度不能超过 20 个字符")
	public String getDeptCode() {
		return deptCode;
	}

	public void setDeptCode(String deptCode) {
		this.deptCode = deptCode;
	}
	
	@Length(min=0, max=20, message="部门长度不能超过 20 个字符")
	public String getDeptName() {
		return deptName;
	}

	public void setDeptName(String deptName) {
		this.deptName = deptName;
	}
	
	public Integer getApproveState() {
		return approveState;
	}

	public void setApproveState(Integer approveState) {
		this.approveState = approveState;
	}
	
	@Length(min=0, max=20, message="审批人编码长度不能超过 20 个字符")
	public String getApproveManCode() {
		return approveManCode;
	}

	public void setApproveManCode(String approveManCode) {
		this.approveManCode = approveManCode;
	}
	
	@Length(min=0, max=5, message="审批人长度不能超过 5 个字符")
	public String getApproveManName() {
		return approveManName;
	}

	public void setApproveManName(String approveManName) {
		this.approveManName = approveManName;
	}
	
	public List<StStockOutBillDetail> getStStockOutBillDetailList() {
		return stStockOutBillDetailList;
	}

	public void setStStockOutBillDetailList(List<StStockOutBillDetail> stStockOutBillDetailList) {
		this.stStockOutBillDetailList = stStockOutBillDetailList;
	}
	
}